import { CouponInfo } from '@/service/api/modules/coupon/response'
import { SimpleStoreInfo } from '../store/response'

/**
 * TeamVo
 */
export interface TeamVo {
  /**
   * 聚合状态=>[ WORKING->拼团中  DONE->已完成  REFUNDED->已退款  EXPIRED->已过期  CANCEL->用户取消  EXCEPTION->状态异常  QUIT->用户退团(一般不会出现)  MEMBER_FULL->团员已满(JOIN 和 DONE)  NONE->不存在(非团员)  NON_PAYMENT->待付款  REFUNDING->退款中 ]
   */
  aggregatedStatus?: AggregatedStatus;
  couponInfo?: CouponInfo;
  couponUserId?: string;
  createdTime?: Date;
  endTime?: Date;
  /**
   * 团队id
   */
  id?: number;
  /**
   * 成员信息
   */
  members?: UserInTeamVo[];
  /**
   * 当前用户成员状态 为空表示当前用户非团成员=>[ JOIN->加入 - 未付款  PAY->付款 - 有效成员  QUIT->退出  REFUNDED->已退款  REFUNDING->退款中  CANCEL->用户取消 ]
   */
  memberStatus?: MemberStatus;
  /**
   * 团队状态=>[ CREATED->创建  WORKING->拼团中(团长已支付)  DONE->人员均已付款(可以发券了)  EXPIRED->过期 ]
   */
  status?: TeamStatus;
  storeInfo?: SimpleStoreInfo;
  /**
   * 团队no
   */
  teamNo?: string;
  /**
   * 团长id
   */
  userId?: number;
}

/**
 * UserInTeamVo
 */
export interface UserInTeamVo {
  /**
   * 头像
   */
  avgPath?: string;
  id?: number;
  username?: string;
}

/**
 * ActivityTeam，活动拼团表
 */
export interface ActivityTeam {
  /**
   * 优惠券id
   */
  couponId?: number;
  createdTime?: Date;
  endTime?: Date;
  id?: number;
  /**
   * 状态=>[ CREATED->创建  WORKING->拼团中(团长已支付)  DONE->人员均已付款(可以发券了)  FULL->人员已满  EXPIRED->过期 ]
   */
  status?: TeamStatus;
  /**
   * 团长id
   */
  userId?: number;
}

/**
 * WorkingTeamVo
 */
export interface WorkingTeamVo {
  /**
   * 团队id
   */
  id?: number;
  /**
   * 团队成员
   */
  members?: UserInTeamVo[];
  /**
   * 状态=>[ CREATED->创建  WORKING->拼团中(团长已支付)  DONE->人员均已付款(可以发券了)  FULL->人员已满  EXPIRED->过期 ]
   */
  status?: TeamStatus;
}

/**
 * GetTeamsVo
 */
export interface GetTeamsVo {
  /**
   * 聚合状态=>[ WORKING->拼团中  DONE->已完成  REFUNDED->已退款  EXPIRED->已过期  CANCEL->用户取消  EXCEPTION->状态异常  QUIT->用户退团(一般不会出现)  MEMBER_FULL->团员已满(JOIN 和 DONE)  NONE->不存在(非团员)  NON_PAYMENT->待付款  REFUNDING->退款中 ]
   */
  aggregatedStatus?: AggregatedStatus;
  /**
   * 优惠券封面
   */
  couponCover?: string;
  couponId?: number;
  /**
   * 优惠券名称
   */
  couponName?: string;
  /**
   * 创建时间
   */
  createdTime?: Date;
  /**
   * 拼团结束时间
   */
  endTime?: Date;
  /**
   * 拼团所需人数
   */
  extTotalTeamMember?: number;
  /**
   * 需要支付
   */
  needPay?: number;
  /**
   * 团队成员
   */
  members?: UserInTeamVo[];
  /**
   * 当前用户成员状态=>[ JOIN->加入 - 未付款 PAY->付款 - 有效成员 QUIT->退出 REFUNDING->退款中 ]
   */
  memberStatus?: MemberStatus;
  /**
   * 退款原因
   */
  refundReason?: string;
  /**
   * 店铺封面
   */
  storeCover?: string;
  /**
   * 店铺id
   */
  storeId?: number;
  /**
   * 店铺名称
   */
  storeName?: string;
  /**
   * 团队id
   */
  teamId?: number;
  /**
   * teamStatus=>[ CREATED->创建  WORKING->拼团中(团长已支付)  DONE->人员均已付款(可以发券了)  FULL->人员已满  EXPIRED->过期 ]
   */
  teamStatus?: TeamStatus;
}

/**
 * GetTeamStatus
 */
export interface GetTeamStatus {
  aggregatedStatus?: AggregatedStatus;
  memberStatus?: MemberStatus;
  teamId?: number;
  teamStatus?: TeamStatus;
}

// CREATED->创建  WORKING->拼团中(团长已支付)  DONE->人员均已付款(可以发券了)  FULL->人员已满  EXPIRED->过期
export type TeamStatus = 'CREATED' | 'WORKING' | 'DONE' | 'FULL' | 'EXPIRED'

// JOIN->加入 - 未付款  PAY->付款 - 有效成员  QUIT->退出  REFUNDED->已退款  REFUNDING->退款中  CANCEL->用户取消
export type MemberStatus = 'JOIN' | 'PAY' | 'QUIT' | 'REFUNDED' | 'REFUNDING' | 'CANCEL'

// WORKING->拼团中  DONE->已完成  REFUNDED->已退款  EXPIRED->已过期  CANCEL->用户取消  EXCEPTION->状态异常  QUIT->用户退团(一般不会出现)  MEMBER_FULL->团员已满(JOIN 和 DONE)  NONE->不存在(非团员)  NON_PAYMENT->待付款  REFUNDING->退款中
export type AggregatedStatus =
  'WORKING'
  | 'DONE'
  | 'REFUNDED'
  | 'EXPIRED'
  | 'CANCEL'
  | 'EXCEPTION'
  | 'QUIT'
  | 'MEMBER_FULL'
  | 'NONE'
  | 'NON_PAYMENT'
  | 'REFUNDING'
